﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Webmedia.Wedding.Entities.Object.People;
using Webmedia.Wedding.Entities.Object.ThucDon;
using Webmedia.Wedding.Entities.Object.Restaurent;
using Webmedia.Wedding.Entities.Object.MuaKinhDoanh;
namespace Webmedia.Wedding.Entities.Object.HopDong
{
    public class HopDong
    {
        [Key]
        public int ID { get; set; }
        [Display(Name = "Mã hợp đồng")]
        public string MaHD { get; set; }
         [Display(Name = "Tên hợp đồng")]
        public string TenHopDong { get; set; }//tự động ghép tên hợp đồng + tên chủ hợp đồng + loại hợp đồng
        public string  ChuVietTrenSanKhau { get; set; }//chữ viết vd như: Huy Hiêu - Hiên Phạm viết trên sân khấu của tiệc cưới.
        //---------------------------------
        [Display(Name = "Loại hợp đồng")]
        public int LoaiHopDongID { get; set; }
        [ForeignKey("LoaiHopDongID")]
        public LoaiHopDong LoaiHopDong { get; set; }
        //---------------------------------
        [Display(Name = "Thời gian")]
        public int ThoiGianTiecID { get; set; }
        [ForeignKey("ThoiGianTiecID")]
        public ThoiGianTiec ThoiGianTiec { get; set; }
        //---------------------------------
        //
        [Display(Name = "Ngày Tạo")]
        public DateTime NgayTao { get; set; }
        //
        [Display(Name = "Người tạo")]
        public Nullable<int> NguoiTaoID { get; set; }
        [ForeignKey("NguoiTaoID")]
        public virtual NguoiDung NguoiTao { get; set; }
        //
        [Display(Name = "Ngày cập nhật")]
        public Nullable<DateTime> NgayUpdate { get; set; }
        //
        [Display(Name = "Người cập nhật")]
       public Nullable<int> NguoiUpdateID { get; set; }
        [ForeignKey("NguoiUpdateID")]
        public virtual NguoiDung NguoiCapNhat { get; set; }

        public bool Deleted { get; set; }
        [Display(Name = "Áp dụng")]
        public bool Enable { get; set; }
        //
        //Ngày Hợp đồng
        public Nullable<DateTime> NgayHopDong { get; set; } // ngày diễn ra tiệc

        //mùa
        [Display(Name = "Mùa kinh doanh")]
        public int MuaID { get; set; }
        [ForeignKey("MuaID")]
        public Mua Mua { get; set; }
        //
       
        //tinh trang hop dong
        [Display(Name = "Tình trạng hợp đồng")]
        public int TinhTrangHopDongID { get; set; }
        [ForeignKey("TinhTrangHopDongID")]
        public TinhTrangHopDong TinhTrangHopDong { get; set; }
        //

         [Display(Name = "Tổng giá sảnh")]
        public double TongGiaSanh { get; set; }
         [Display(Name = "Tổng giá thực đơn")]
        public double TongGiaThucDon { get; set; }
         [Display(Name = "Tổng giá sản phẩm")]
        public double TongGiaSanPham { get; set; }
         [Display(Name = "Tổng giá dịch vụ")]
        public double TongGiaDichVu { get; set; }
        [Display(Name = "Tổng tiền hợp đồng")]
        public double TongTienHopDong { get; set; } // số tiền của hợp đồng

         [Display(Name = "Đặt cọc")]
        public double SoTienDatCoc { get; set; }
         [Display(Name = "Thanh toán")]
        public double SoTienThanhToan { get; set; }// số tiền thanh toán sau tiệc//

         [Display(Name = "Tổng chi phí tiệc")]
        public double TongChiPhiHoatDongTiec { get; set; }//chi phí tạo tiệc, vd: thuê phục vụ.
         [Display(Name = "Tổng chi phí thực đơn")]
        public double TongChiPhiThucDonTiec { get; set; }//chi phí 
         [Display(Name = "Tổng chi phí sản phẩm")]
        public double TongChiPhiSanPham { get; set; }//chi phí tạo tiệc
         [Display(Name = "Tổng chi phí dịch vụ")]
        public double TongChiPhiDichVu { get; set; }//chi phí tạo tiệc
         [Display(Name = "Tổng chi phí tri ân")]
        public double TongChiPhiTriAn { get; set; }//chi phí tạo tiệc
         [Display(Name = "Tổng chi phí hợp đồng")]
        public double TongChiPhiHopDong { get; set; }
        //
         [Display(Name = "Doanh thu")]
        public double DoanhThu { get; set; }

        //
         [InverseProperty("HopDong")]
         public virtual ICollection<HopDong_ChiPhiHoatDong> HopDong_ChiPhiHoatDongs { get; set; }
         [InverseProperty("HopDong")]
         public virtual ICollection<HopDong_DichVu> HopDong_DichVu { get; set; }
         [InverseProperty("HopDong")]
         public virtual ICollection<HopDong_SanPham> HopDong_SanPhams { get; set; }
         [InverseProperty("HopDong")]
         public virtual ICollection<HopDong_Sanh> HopDong_Sanh { get; set; }

         [InverseProperty("HopDong")]
         public virtual ICollection<HopDong_ThucDon> HopDong_ThucDons { get; set; }
         [InverseProperty("HopDong")]
         public virtual ICollection<HopDong_TriAn> HopDong_TriAns { get; set; }
    }
}
